package com.cx.zyx.modulebiz.news.component;

import jakarta.validation.constraints.NotNull;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;
import java.util.Arrays;

@Component("newsKeyGenerator") // 注册为 Spring Bean
public class NewsKeyGenerator implements KeyGenerator {

    @Override
    public @NotNull Object generate(@NotNull Object target, @NotNull Method method, @NotNull Object... params) {
        // target: 调用方法的对象
        // method: 被调用方法的 Method 对象
        // params: 方法的参数

        // 示例：生成 "news::类名::方法名::参数哈希值" 的键
        StringBuilder sb = new StringBuilder();
        sb.append("NKG::").append(target.getClass().getSimpleName()).append("::");
        sb.append(method.getName()).append("::");

        if (params.length == 0) {
            sb.append("no_args");
        } else {
            // 对所有参数进行哈希处理或拼接，确保唯一性
            sb.append(Arrays.deepHashCode(params));
        }

        return sb.toString();
    }
}
